最近,关于数据库国产化替代的话题甚是热门。OSCHINA 开源中国特别邀请了欧冶云商股份有限公司数据库首席薛晓刚就这一话题发表看法。
为什么要替代 Oracle?
去 IOE 的背景,要从阿里巴巴去 IOE 谈起,I 是 IBM 小型机大型机,O 是 Oracle 数据库,E 是 EMC 存储。这几个搭配起来使得阿里轻松走过了最初的技术发展阶段。这个配置组合也是当年这条街最靓的仔。这个穿搭在大型银行和运营商中也很常见。这种组合的好处是就稳定,而且非常稳定。缺点可能只有一个,就是贵。随着阿里业务的增加,阿里人考虑继续这样使用的成本很高。再加上阿里开始了云计算的规划,所以提出了去 IOE 的口号。这个在其他互联网公司是不可能有的。因为其他互联网公司一开始就没有 IOE 所以不需要去。只有阿里一开始的架构是这样的。所以只有阿里提出了。阿里做阿里云,希望用户上云。上云的核心就是数据上云。数据上云后存在哪里?自然是数据库中,如果用的数据库是 Oracle 的,那么可能要分给 Oracle 利润(要采购许可)。所以阿里打算用 MySQL 以及后来自研替代 Oracle。从最开始的去 IOE,直到现在还经常看到各种大会上提到去 O,这用了十几年,去掉了 I 和 E。有些企业完成了去 O,而有些企业还在使用 O。那么为什么只提去 O,那不用去 DB2 和 SQLServer 吗?本质上也要去的。只是其他的数据库不如 Oracle 的使用广泛,例如现在使用和维护 DB2 的人是很少了。之所以没人提去 DB2,是因为从总体来说 DB2,已经被去掉了。所以狭义去 O 是去掉 Oracle 数据库,而广义的去 O 其实可以扩大为去 M(美国化)。在今天不少人观点认为用 MySQL 去替代 Oracle 是无意义的。因为 MySQL 和 Oracle 同属于甲骨文公司。甚至在有的场合中还会提到要去掉 MySQL。当前数据库国产化进程情况如何?
当前在信创和安可这些趋势下,国产数据库如雨后春笋般出现。在国内某权威数据库排行榜上,已经有 280 多个数据库了。实际上的数字可能比这个还要多一点。在一些政府、金融、运营商行业都有一些国产化替换。这些替换其实不仅仅是数据库了,还包括服务器、CPU、操作系统等等。从宣传上看有些是全栈替换,有些是部分替换。也还有一些公司或者企业没有替换。然而这些都是国产厂商的宣传,至于实际的替换情况只有用户自己知道。而即使替换的用户也没有进行相关的宣传,这就使得整个情况非常的模糊。不过这个过程还在继续,还是会有一些系统从 Oracle、DB2、SQLServer 等数据库切换到国产化上来的。只是现在不确定因素太多了。今年年初,TiDB、TDengine、TDSQL、OceanBase 四位数据库界掌门人在一场直播中大致达成一致,三年后在中国健康运营的数据库不超过 20 家。所谓健康运营是,企业能有正常营收,员工发薪正常。目前国产数据库有 280 多个产品,有的一个公司有几个产品。即使这样也是有绝大部分产品或者公司会因为无法盈利而退出舞台。用户现在也意识到了这一点,也在等情况明朗后再去选择。没有企业愿意看到花了很大代价切换的数据库无人维护了,不得不继续再次替换。国产数据库有完全自研的,例如达梦、OceanBase 等,也有一些是基于 MySQL 做改造的,还有一些事基于 PostgreSQL 改造的,还有购买外国源码然后进行修改的。替代 Oracle 的难点在哪里?
技术上,Oracle 确实领先,在数据库领域是一个标杆一样的存在。即使我们国产数据库的头部企业都认为自己和 Oracle 有较大的差距,作为学习者不断地在向 Oracle 学习。Oracle 领先的其实不仅仅是技术,还有设计理念和前瞻性。2020 年信通院发布的白皮书中写了数据库的未来几大趋势,而在那时候这几个趋势当时 Oracle 已经部分实现和深度实现了。其实 Oracle 产品线很多,不仅仅是数据库。其中间件、硬件、操作系统等等是全方面的输出。兼容性。对于替换国产数据库,兼容性是一件绕不开的话题,特别是对于存量系统来说,大多数重要系统是运行在 Oracle 数据库上的,那么对于 Oracle 的基本 SQL 语法、PL/SQL、存储过程、触发器等的兼容性肯定是十分重要的,毕竟这涉及代码变更的问题。如果在国产数据库替换过程中出现业务适配新数据库代码变更量太大、数据库功能缺失需要业务侧代码补充、适配分布式数据库过程中对数据库设计和业务逻辑变更等现象的话,开发层面对国产数据库的抵触会非常大。性能。性能和硬件以及优化器都有很大的关系。优化器这方面目前没有能超过 Oracle 优化器的。因为这些底层都是数学算法。2021 年信通院发布的数据库发展白皮书显示,我国数据库企业针对数据库领域的平均专利数量(含国内外专利)为 38 个,最高为 500 个左右规模,数量为 0 的企业个数是 19 个,占比 24%。拥有专利数 0-4 个的企业占比最高为 51%,专利数 5-10 个的企业次之,占比 14%,专利数 21-50 个的企业数量排名第三,占比 12%。从企业专利数量上看,Oracle 以 1.4 万个全球领先,SAP 居次席。稳定性。Oracle 的稳定性还是毋庸置疑的,这也就是为什么在过去那么多年中,其一直占据着领导地位,以及使用如此广泛。企业负责人都不希望看到自己的数据库经常出问题,每次数据库的问题都可能导致故障,从而影响到在线业务。不仅仅要面对直接和间接的经济损失,还有问责的压力。Oracle 等国外数据库有足够的全球市场,专心在技术上投入做数据库,而国产数据库厂商只能在国内有限的数据库市场内卷,需要投入大量的内卷、恶性竞争和关系处理上,无法专心把全部精力放在做数据库上。甚至还是为了如何生存而谋划。数据库领域的人都知道,在信创活动结束之后就没有替换动力了。而最终国内市场无法容得下几百家供应商,所以大部分国产数据库的消失也不是技术问题。有哪些能够替代 Oracle 的国产数据库?
这个替代要讲清楚是怎么替代?如果说就是把系统关停,然后把数据导过来,然后再修改数据库的连接字符串就可以和之前一样正常使用而且稳定的。目前没见过也没听说过。如果说换了一个国产数据库,然后把链接这个数据库的所有业务系统的软件代码进行修改(这个修改可能是 30-100%),即软件重写适配数据库或者部分需求和功能放弃,那么这样的替换还是有一些的。OceanBase、TiDB、TDSQL 等都有在不同程度上有,具体的都是应实际情况而定。由于同等硬件下不如 Oracle 的性能,所以增加硬件导致成本的上升。或者分布式数据库的硬件就是比集中式硬件的多导致的硬件成本上升。由于数据库特性和功能的缺失,所以应用程序需要改造的成本上升。这部分可能占替换总成本的 60%-80%。因为这是调动大量应用开发人员重写适配的过程。由于稳定性上不如 Oracle,所以需要增加大量运维人员,导致运维的成本上升。由于部分国产数据库需要许可才可以运行,所以增加了大量的许可费用。相比较之前很少采购 Oracle 许可或者甚至不采购许可来说,这部分采购费用占比很大。以上这些成本可能会是使用 Oracle 数据库的数倍甚至几十倍甚至上百倍。而很多计算中都忽略了第二和第三项的成本。现有国产数据库跟 Oracle 相比,有多大的差距?
可能不同的人有不同的见解。我个人感觉有以下多方面的差距(但是不限于此):数据库的优化器上:有人说为什么 Oracle 快,你可能不知道多少满头白发的数学教授在那里研究着这些。有人说:你别逼我,逼急了我什么都做的出来。” “是吗?,那你把这道数学题给做做?” 人被逼急了还真不是什么都做的出来,起码数学就不是。各种复杂查询的核心是优化器和统计信息。而这全部都是数学问题。没有在数学上的基础投入是无法在这个领域攻坚克难的。体系架构上:如今越来越多的国产数据库考虑 RAC 架构。在经历了互联网的分布式数据库的洗礼后,越来越多的用户觉得集中式更加适合自己。所以才有了各种国产数据库厂商开始实现 RAC 的计划,达梦、优炫等。即使分布式数据库厂商在研发过程中发现 Oracle 的各种体系设计,没有一个是多余的,都是设计极其精妙的。而这些很多设计都是 30 年前甚至更早就已经设计到位的。与操作系统的融合上:数据库是运行在操作系统之上的,如何与 CPU 打交道?SQL 调用指令集的多少都是有讲究的。甚至有些操作是绕过操作系统直接操作的。这些都是需要深耕操作系统才能解决的。与硬件的融合上:数据库必然要和存储设备打交道。数据库的优化几乎等同于 IO 优化。所以 Oracle 直接做出来自己的存储。这些存储上都是带有 CPU 的,更好的存储和读取数据上发挥了很大的作用。做数据库是从上至下的深入解决。趋势把握上:数据库的多模和超融合这些都是 Oracle 在引领着数据库技术的前进方向。我们定义为趋势的,Oracle 基本都是已经实现的。而很多理念从设计到实现需要 8-10 年的过程。国产数据库未来要怎么走?
最好是没有政治因素的干扰去市场上竞争,避免大跃进式的百家齐放,而是规范市场,让国内外数据库厂商同台竞争。用户结合自己的预算进行抉择,是选择廉价的还是性价比高的,让一切回归到技术本身来。而不能用政策限制其他产品进入,只能强制使用国产。这样会导致自我封闭和外部的排斥。既然我们用政策限制其他人,那么对等的就会出现别人限制我们。从而更加无法走出去。如果真正能走出去,在国外用得起来,那么就是国产数据库的成功。中国的高铁就是因为走出去了才成为了中国的一张名片。作者简介:
薛晓刚,现任欧冶云商股份有限公司数据库首席。曾服务于政府、公安、交通、安防行业,从事过大型项目管理,设计和运维多个单表 100 亿,单机 100TB 的数据库。目前负责高可用、业务连续性和高并发数据架构设计和运维管理。
Oracle ACE-Pro(Oracle 和 MySQL 方向),Oracle OCP/MySQL OCP 及 OCP 讲师。PostgreSQL 的 PGCE 和 PCP 认证,PostgreSQL ACE Partner。墨天轮 MVP,TiDB MVA,ITPUB 论坛内存数据库版主、核心专家、金牌顾问,墨天轮社区特聘金牌讲师,机械工业出版社专家委员会委员。
联系作者:
GitHub.com跑了1200多台MySQL主机,如何无缝升级到8.0?
phpy:PHP与Python互调用库,为PHP引入Python生态
哈工大人工智能专业大一学生写了70万行代码?
点这里 ↓↓↓ 记得 关注✔ 标星⭐ 哦